package edu.whut;
/*
抽象类（特殊的父类）
1.内部允许编写抽象方法
2.将共性的方法抽取到父类后，父类描述不清（无法给出每一个子类的具体明确）
3.继承抽象类后，子类必须重写抽象方法
注意事项
1.抽象类不能实例化（如果允许创建对象，就会调用里边的没有意义的抽象方法）
2.抽象类存在构造方法（交给子类，通过super进行访问）
3.抽象类中可以存在普通方法（让子类使用）
4.抽象类的子类要么重写所以抽象方法，要么是抽象类（继承体系中不断向下制定规则）
abstract关键字冲突
1.被abstract修饰的方法，强制要求子类重写，被final修饰的方法子类不能重写
2.被abstract修饰的方法，强制要求子类重写，被private修饰的方法子类不能重写
3.被static修饰的方法可以类名调用，类目调用抽象方法没有意义
 */
public class AbstractTest01 {
    public static void main(String[] args) {

    }
}
abstract class Animal{
    public abstract void eat();//抽象方法，需要存活在抽象类中
}
class Cat extends Animal{
    @Override
    public void eat(){
        System.out.println("猫吃鱼");
    }
}
class Dog extends Animal{
    public void eat(){
        System.out.println("狗吃屎");
    }
}
